package com.academico.web.servlet.matricula;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.academico.dao.MatriculaDAO;
import com.academico.model.Matricula;
import com.academico.util.Util;
import com.academico.web.servlet.BaseServlet;

public class SaveMatriculaServlet extends BaseServlet {

	private static final long serialVersionUID = 3996193399727139104L;

	@Override
	public void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<String> erros = new ArrayList<String>();
		
		Integer raAluno = Util.convertStringToInteger(request.getParameter("raAluno"));
		Integer codigoCurso = Util.convertStringToInteger(request.getParameter("codigoCurso"));
		Date dataMatricula = Util.createSimpleDate(request.getParameter("dataMatricula"), "dd/MM/yyyy");
		
		validateParameters(raAluno, codigoCurso, dataMatricula, erros);
		
		if(erros.size() == 0){
			Matricula matricula = new Matricula();
			matricula.setRaAluno(raAluno);
			matricula.setCodigoCurso(codigoCurso);
			matricula.setDataMatricula(dataMatricula);
			matricula.setSituacaoMatricula(Matricula.SituacaoMatricula.ATIVA);
			MatriculaDAO matriculaDAO = new MatriculaDAO();
			matriculaDAO.save(matricula);
			setAttributeToRequest(request, "message", "Sucesso na operacao");
		} else {
			setAttributeToRequest(request, "errors", erros);
		}
		
		forward("matricula", request, response);
	}
	
	private void validateParameters(Integer raAluno, Integer codigoCurso, Date dataMatricula, List<String> erros){
		if(Util.isNull(raAluno)){
			erros.add("RA do aluno invalida");
		}
		if(Util.isNull(codigoCurso)){
			erros.add("Codigo do curso invalido");
		}
		if(Util.isNull(dataMatricula)){
			erros.add("Data da matricula invalida");
		}
	}

}
